#pragma once

#include "../GameObject.h"

class Item : public GameObject
{
public:
	Item(const std::string &name, const std::string &description, const std::string &indefinite_article = "a");
	virtual ~Item();

	void look() override;

    std::string getIndefiniteArticle() override;

	enum Stance
	{
		LAYING = 0,
		IN_POCKET,
		IN_HAND
	};
	Item::Stance getStance() const { return stance; }
	std::string getStanceAsString();
	void setStance(Item::Stance stance) { this->stance = stance; }

    enum Setting
	{
		NULL_SETTING = 0,
		NON_INTERACTIVE,
        INDEF_ARTICLE_AN,
        STANCE_STAND,
        STANCE_HOVER,
        STANCE_GROW
	};
	void add(Setting setting);
	bool has(Setting setting);

protected:
	Item::Stance stance;
    std::vector<Setting> settings;
};
typedef std::shared_ptr<Item> ItemPtr;
